#pragma once

class FastBlockQueue;

class QueueContext
{
public:
	QueueContext(FastBlockQueue& requestQueue, FastBlockQueue& businessQueue,FastBlockQueue& UIQueue,FastBlockQueue& highTimerQueue,FastBlockQueue& waitTimerQueue)
		:m_requestQueue(requestQueue),m_businessQueue(businessQueue),m_UIQueue(UIQueue),m_highTimerQueue(highTimerQueue),m_waitTimerQueue(waitTimerQueue)
	{
	}
	QueueContext(QueueContext const& other)
		:m_requestQueue(other.GetRequestQueue()),m_businessQueue(other.GetBusinessQueue()),
		m_UIQueue(other.GetUIQueue()),m_highTimerQueue(other.GetHighTimerQueue()),m_waitTimerQueue(other.GetWaitTimerQueue())
	{

	}
	FastBlockQueue& GetBusinessQueue() const { return m_businessQueue; }
	FastBlockQueue& GetUIQueue() const { return m_UIQueue; }
	FastBlockQueue& GetRequestQueue() const { return m_requestQueue; }
	FastBlockQueue& GetHighTimerQueue() const { return m_highTimerQueue; }
	FastBlockQueue& GetWaitTimerQueue() const { return m_waitTimerQueue; }
private:
	FastBlockQueue& m_requestQueue;
	FastBlockQueue& m_businessQueue;
	FastBlockQueue& m_UIQueue;
	FastBlockQueue& m_highTimerQueue;
	FastBlockQueue& m_waitTimerQueue;
};